2.2k 词
概述在Linux系统中,ls -l命令是我们日常使用最频繁的命令之一,它能够以长格式显示文件的详细信息。本文将深入解析ls -l的实现原理,并逐步讲解如何用C语言实现一个简化版的ls -l命令。 // 输出示例:-rw-rw-r-- 1 miao miao 4 9月 15 20:28 a.txt #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <pwd.h> #include <grp.h> #include <time.h> #include <string.h> int main(int argc, char* argv[]){ if (argc < 2){ printf("%s filename\n", argv[0]); return -1; } // 通过stat函数获取文件信息 st...
1.7k 词
什么是字符串匹配 暴力解法 KMP算法 具体实现 补充:   KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,用于在一个主串中查找一个模式串的位置。它通过预处理模式串,避免了在匹配失败时重复比较已经匹配的部分,从而提高了匹配效率。 该算法在1977年被提出,取三位贡献者的姓名首字母组成算法名称。 什么是字符串匹配字符串匹配问题是计算机科学中的一个经典问题,其核心目标是在一个较长的文本串(Text)中查找是否存在一个或多个与给定模式串(Pattern)完全相同的子串。 例如: 文本串(T):"ABABDABACDABABCABAB" 模式串(P):"ABABCABAB" 那么模式串可以在文本串的索引11处匹配   暴力解法知道控制语句用法的人都知道,这个问题可以套两层循环来解决,从文本串的第1个字符开始,与模式串逐字符比对,如果发现不匹配,则从文本串的第2个字符开始重新比对,以此类推,该解法时间复杂度为$O(m*n)$,效率较低。   KMP算法KMP算法通过预处理模式串...
607 词
出于科研项目要求,我需要开发一个能个性化定制界面与功能的BLE手机上位机软件,在经过简单的调研后,主要有以下两种开发路径: Android Studio MIT APP Inventor 其中AS需要Java基础,且开发周期长;MIT APP Inventor图形化编程,20min可上手,于是我选择后者,最终也能达到我想要的效果。 选择建议如下: 选 Android Studio:如果你想成为专业开发者,或开发功能复杂、可发布的商业应用。 选 MIT App Inventor:如果你是学生,或只想快速做一个简单应用 于是在B站看了几个包浆的教学视频后,我开始上手制作,过程意外地顺利 首先,你需要明确你的APP要包含哪些模块 如下图所示,在登陆官网后,你可以把你需要的模块在侧边栏拖入主页面 依次描述我的思路 上图中组件1是BLE设备搜索与断联按钮 2是BLE连接状态,3是波形图,4是实时数值,5是清空按钮; 当然也有后端组件Ⅰ,是BLE模块,这个在官网没有,需要下载拓展包,https://iot.appinventor.mit.edu/ 这个网站里可以找...
5.8k 词
MFCC的核心思想是模仿人耳对声音的非线性感知特性(人耳对低频声音比高频声音更敏感),从而更好地表示语音特征。其流程可以概括为以下步骤: 分帧 目的:语音信号是非平稳信号,其特性是随时间变化的。但在一个非常短的时间段内,可以近似认为是平稳的。分帧就是将长信号切分成许多短片段来分析。 操作:使用一个固定长度的窗口以一定的帧移沿着信号滑动并截取数据。 加窗 目的:减少每一帧信号在其两端处的频谱泄漏,使帧两端平滑地衰减到零,从而降低后续傅里叶变换后旁瓣的强度。 操作:将每一帧信号乘上一个窗函数。 傅里叶变换和功率谱计算 目的:将信号从时域转换到频域。 操作: 对每一帧加窗后的信号进行FFT,得到复数频谱。 然后计算其功率谱(取模的平方)。P = |FFT(frame)|² / N (N是FFT点数) 梅尔滤波器组滤波 目的:模拟人耳的听觉特性。人耳对于不同频率的感知能力是不同的,在低频区域区分度高,在高频区域区分度低。梅尔刻度是一种将实际频率转换为更符合人耳感知的频率刻度。 操作: 定义一组三角带通滤波器(梅尔滤波器组),这些滤波器在梅尔刻度上是等宽的,但在线性频率刻度上是不...
117k 词
1. 数学 2. 数组 3. 链表 4. 哈希散列 5. 栈与队列 6. 类与OOP应用 7. 二叉树 8. 回溯 9. 贪心 10. 动态规划 1. 数学1.1 基础有一天, 小明收到一张奇怪的信, 信上要小明计算出给定数各个位上数字为偶数的和。例如:5548,结果为12,等于 4 + 8 。小明很苦恼,想请你帮忙解决这个问题 #include <iostream> using namespace std; int main(){ int n, sum = 0; //input while(cin >> n){ // calculation while (n != 0){ int res = 0; res = n % 10; if ((res % 2) == 0) sum += res; n = (n - res) / 10; } cout << sum <<...
27k 词
目录: Ch0 数字图像的概念 图像分类:模拟图像与数字图像 数字图像处理的基本特点 数字图像处理的基本内容 Ch1 图像技术基础 图像与像素 数字化过程 像素的属性 像素间的基本关系 像素间的距离 印刷品中的半调输出技术 图像坐标变换 图像的质量 图像储存的数据结构 图像文件格式 *光盘读取原理 Ch2 空间域图像增强 灰度映射 图像求反(负片) 幂次变换 动态范围压缩 阶梯量化 灰度切分/阈值切分 位平面切片 图像运算(逐像素进行) 算术运算(一般用于灰度图像) 代数运算 逻辑运算 直方图变换 *直方图均衡化方法: *直方图规定化方法: 镜头边界的检测 图像空间平滑滤波增强 图像中的噪声 邻域平均线性滤波(均值滤波) 中值滤波法 空间域滤波推广 基本低通滤波器设计原则: 微分滤波器模板系数设计 高增益滤波 Ch3 频域图像增强 理论基础 二维卷积 二维离散傅里叶变换 基本性质 DFT的问题 频域图像增强 一般步骤 频域平面与图像空域特性的关系 滤波器 理想低通滤波器的定义 理想低通滤波器的分析 Butterworth低通滤波器 理想高通滤...
6.5k 词
在之前的基础上改进了一部分 硬件上把串口和SWD下载口引出来了,夹具下载有点不稳定 同时把手头上的LCD模组和红外传感器模组给用了,没有额外购买物资,成品图如下: 左边是V1,右边是V2   软件部分增加了一些图像处理的功能: 图像平滑:双线性插值 void interpolateTemperature(float *src, float *dst, uint8_t src_w, uint8_t src_h, uint8_t dst_w, uint8_t dst_h) { float x_ratio = (float)(src_w-1) / dst_w; float y_ratio = (float)(src_h-1) / dst_h; for (int y = 0; y < dst_h; y++) { for (int x = 0; x < dst_w; x++) { float x_src = x * x_ratio; ...
1.6k 词
目录: Step 1 : 安装MathJax引擎并更换渲染引擎: Step 2 : 更新MathJax的cdn链接 Step 3 : 更改部分转义规则 Step 4 (可选) : 主题未预配置下使用Hexo-filter-mathjax 测试 在写一些内容时,会遇到需要添加数学公式的地方,Hexo部分主题不支持公式的渲染,比如我正在使用的vivia主题,在查阅一些资料之后,我使用MathJax引擎实现了vivia主题下的数学公式渲染。 MathJax简介:https://www.osgeo.cn/mathjax/basic/mathjax.html 该引擎是一款可在所有现代浏览器中工作的开源js显示引擎,辅助页面作者编写含有数学公式的文档 Step 1 : 安装MathJax引擎并更换渲染引擎:​ 操作包括卸载Hexo自带的Hexo-math,卸载默认的对MathJax不友好的marked引擎 npm uninstall hexo-math --save npm install hexo-renderer-mathjax --save npm ...